﻿Imports VSModel
Imports Cls_Common
Imports System.Data
Imports System.IO
Imports System.Reflection

Partial Class Control_Customer_ImportFromExcel
	Inherits System.Web.UI.UserControl
	Private Shared ReadOnly log As log4net.ILog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType)
	Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
		divInformation.Attributes.Add("style", "display:none")
		txtErrorLog.Text = ""
		If Not IsPostBack Then
			' btnSubmitChange.Attributes.Add("onclick", "return ComfirmDialog('Bạn có chắc chắn muốn lưu không?',0,'" + btnSubmitChange.ClientID + "','0',1);")
			Dim script As ScriptManager = ScriptManager.GetCurrent(Me.Page)
			If Not script Is Nothing AndAlso script.IsInAsyncPostBack Then
				ScriptManager.RegisterStartupScript(Me.Page, Me.Page.GetType, "regjs", "ajaxJquery()", True)
			Else
				Me.Page.ClientScript.RegisterStartupScript(Me.Page.GetType(), "regjs", String.Concat("Sys.Application.add_load(function(){", "ajaxJquery()", "});"), True)
            End If

            If Not Session("ThongBaoIn") Is Nothing Then
                btnThongBao.Text = "None"
            End If

		End If
	End Sub
	Protected Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnUpload.Click
		If flDocument.HasFile Then
			Dim _fileName = flDocument.FileName.Substring(0, flDocument.FileName.LastIndexOf("."))
			Dim _checkName = Session("UserName").ToString() & hidUpdateDate.Value.Replace("/", "")
			Dim FilePath As String = Server.MapPath("~") & "\Uploads\" & flDocument.FileName
			If _fileName <> _checkName Then
				'' Xóa đi file UpLoad
				If File.Exists(FilePath) Then
					File.Delete(FilePath)
				End If
				Excute_Javascript("Alertbox('Tên file của bạn không đúng ngày cập nhật dữ liệu. Vui lòng chọn lại file Tạm Trú !');", Me.Page, True)
				Exit Sub
			End If
			' tiến hành upload file lên server
			flDocument.SaveAs(FilePath)

			Using data As New VSEntities
				'btnSubmitChange.Attributes.Remove("onclick")
				'' Xóa dữ liệu ở table CustomerTemp 
				'With grvDanhSach
				'	.DataSource = Nothing
				'	.DataBind()
				'End With

				Try

					'' Get Data from file 
					Dim dt As DataTable = New DataTable()

					Dim _totalRow As Integer = 0
					Dim _totalColumn As Integer = 0
					Dim _rowEffect As Integer = 0

					'*********************************************************************************************************
					'Cách sau dùm hàm export của Aspose
					Dim _workbook As New Aspose.Cells.Workbook(FilePath)
					Dim _workSheet As Aspose.Cells.Worksheet = _workbook.Worksheets(0)
					_totalRow = _workSheet.Cells.MaxRow
					_totalColumn = _workSheet.Cells.MaxColumn
					dt = _workSheet.Cells.ExportDataTable(0, 0, _totalRow + 1, _totalColumn + 1, True)
					'*********************************************************************************************************

					'dt = ReadExcelToDT(FilePath, 0, 0, "")
					' Remove di nhung row data rong
					RemoveEmptyRow(dt1:=dt)
					_totalRow = dt.Rows.Count

					' Add them column de xac dinh sai 
					dt.Columns.Add("ErrorRow", Type.GetType("System.String"))
					dt.Columns.Add("CountryName", Type.GetType("System.String"))
					'dt.Columns.Add("ErrorCol", Type.GetType("System.String")) 'Cach nhau boi dau [,]

					If dt.Rows.Count > 0 Then
						Dim _countSucces As Integer = 0
						Dim _coutFaile As Integer = 0
						Dim _cus As CustomerTemp
						Dim _dateBirth, _fromDate, _toDate, _checkOutDate As Date?
						Dim _fullName, _sex, _dateBirthType, _countryCode, _countryName, _passPostNumber, _passPostType, _visaNumber, _visaType,
					  _visaDurationDate, _visaIssueDate, _visaAgency, _entryDate, _entryGateCode, _entryPurposeCode, _hotelCode, _note As String

						Dim _isActionDelete As Boolean = False
						For index = 0 To dt.Rows.Count - 1
							Try
								Dim _existCus As Boolean ' Xac dinh customer do da co hay chua??
								Dim _lstColIndexError As String = ""
								Dim _sbError As StringBuilder = New StringBuilder("")
								''Update thông tin cho phần Customer
								_fullName = dt.Rows(index)(0) ' Tên đầy đủ của khách hàng
								_sex = dt.Rows(index)(1) ' Giới tính
								_sex = IIf(_sex = "M", "1", "0")
								_dateBirthType = dt.Rows(index)(3) ' Contain values [ D | Y ]
								If _dateBirthType.Trim.Equals("D") Then	 'Nếu _dateBirthType là 'D' 
									_dateBirth = Me.StringToDate(dt.Rows(index)(2))	' Format Date [YYYYMMDD]
								Else
									Try
										_dateBirth = New Date(dt.Rows(index)(2).ToString(), 1, 1) ' Nếu là chỉ có năm sinh [_dateBirthType = 'Y'] thì ngày tháng mặc định là YYYY/01/01
									Catch ex As Exception
										_dateBirth = New Date(1900, 1, 1)
									End Try
								End If
								_countryCode = dt.Rows(index)(4) ' Mã quốc gia
								_passPostNumber = dt.Rows(index)(5)	'' Số hộ chiếu
								_passPostType = dt.Rows(index)(6) ' Loại hộ chiếu
								_passPostType = IIf(_passPostType = "", "HC", _passPostType)
								_visaNumber = dt.Rows(index)(7)	' Số thị thực
								_visaType = dt.Rows(index)(8) ' Loại thị thực
								_visaDurationDate = Me.StringToDate(dt.Rows(index)(9)) ' Thời hạn thị thực p
								_visaIssueDate = Me.StringToDate(dt.Rows(index)(10)) ' Ngày cấp thị thực
								_visaAgency = dt.Rows(index)(11) ' Cơ quan cấp thị thực
								_entryDate = Me.StringToDate(dt.Rows(index)(12)) '' Ngày nhập cảnh
								_entryGateCode = dt.Rows(index)(13)	'cửa khẩu nhập cảnh
								_entryPurposeCode = dt.Rows(index)(14) ' Múc đích nhập cảnh
								_fromDate = Me.StringToDate(dt.Rows(index)(15).ToString()) ' Ngày bắt đầu tạm trú [ngày đến ở  khách sạn]
								_toDate = Me.StringToDate(dt.Rows(index)(16).ToString()) ' Ngày dự kiến rời khỏi khách sạn
								_checkOutDate = Me.StringToDate(dt.Rows(index)(17).ToString()) ' Ngày checkOut thực sự khỏi khách sạn
								_hotelCode = dt.Rows(index)(18).ToString() ' Mã cơ sở lưu trú (mã Khách sạn)
								_note = dt.Rows(index)(19).ToString() ' Những điều ghi chú thêm 


								'************************************ CHECK VALID DATA **********************************************
								'Ngay sinh< ngay hien hanh; Tu ngay <=Ngay hien tai; 
								'Ngay nhap canh<=Ngay hien tai; Ngay nhap canh<=Ngay den; 
								'Ngay nhap canh<=Han tam tru; Han tam tru >= Ngay den
								'*************************************** END CHECK **************************************************
								' Check Mã Quốc gia 
								Dim _qg = (From q In data.Countries Where q.CountryCode = _countryCode Select q).FirstOrDefault()
								If IsNothing(_qg) Then
									_lstColIndexError &= "2,"
									_sbError.Append("Không tồn tại mã quốc gia  [" & _countryCode & "] ")
									_countryName = ""
								Else
									_countryName = _qg.CountryName
									dt(index)("CountryName") = _countryName
								End If

								' Check Loại Họ chiếu
								Dim _isExistsLoaiHoChieu As Boolean = (From q In data.LoaiHoChieux Where q.Code = _passPostType.Trim).Count > 0
								If Not _isExistsLoaiHoChieu Then
									_lstColIndexError &= "6,"
									_sbError.Append("Không tồn tại mã loại hộ chiếu  [" & _passPostType & "] ")
									'txtErrorLog.Text = "- Dòng [" & index + 1 & "]: Không tồn tại mã loại hộ chiếu  [" & _passPostType & "]" & txtErrorLog.Text & Environment.NewLine
									''Continue For
								End If

								' Check Ngày sinh
								If Not _dateBirth Is Nothing Then
									If _dateBirth >= Date.Now.Date Then
										_lstColIndexError &= "4,"
										_sbError.Append(",Ngày sinh lớn hơn ngày hiện tại")

										'txtErrorLog.Text = txtErrorLog.Text & "- Dòng [" & index + 1 & "]: Ngày sinh lớn hơn ngày hiện tại" & Environment.NewLine
										'Continue For
									End If
									If _dateBirth.Value.AddYears(120) < Now.Date Then
										If Not _lstColIndexError.Contains("4,") Then
											_lstColIndexError &= "4,"
											_sbError.Append(",Số tuổi vượt quá giới hạn [ phải < 120 ].")
										End If
										'txtErrorLog.Text = txtErrorLog.Text & "- Dòng [" & index + 1 & "]: Số tuổi vượt quá giới hạn [ phải < 120 ]." & Environment.NewLine
										'Continue For
									End If
								End If
								' Check loai thị thực
								Dim _isExistLoaiThiThuc As Boolean = (From q In data.LoaiThiThucs Where q.Code = _visaType.Trim).Count > 0
								If Not _isExistLoaiThiThuc Then
									_lstColIndexError &= "7,"
									_sbError.Append(",Không tồn tại mã loại thị thực [" & _visaType & "]")
									'txtErrorLog.Text = txtErrorLog.Text & "- Dòng [" & index + 1 & "]: Không tồn tại mã loại thị thực [" & _visaType & "]" & Environment.NewLine
									'Continue For
								End If

								''Check thời hạn thị thực 
								If Not _visaDurationDate Is Nothing AndAlso _visaDurationDate < Now.Date Then
									If Not _lstColIndexError.Contains("7,") Then
										_lstColIndexError &= "7,"
										_sbError.Append(",Thời hạn thị thực nhỏ hơn ngày hiện tại")
									End If
									'txtErrorLog.Text = txtErrorLog.Text & "- Dòng [" & index + 1 & "]: Thời hạn thị thực nhỏ hơn ngày hiện tại" & Environment.NewLine
									'Continue For
								End If
								' Check Ngày cáp thị thực
								If Not _visaIssueDate Is Nothing AndAlso _visaIssueDate > Now.Date Then
									If Not _lstColIndexError.Contains("7,") Then
										_lstColIndexError &= "7,"
										_sbError.Append(",Ngày cấp thị thực lớn hơn ngày hiện tại")
									End If
									'txtErrorLog.Text = txtErrorLog.Text & "- Dòng [" & index + 1 & "]: Ngày cấp thị thực lớn hơn ngày hiện tại" & Environment.NewLine
									'Continue For
								End If

								' Check DM cửa khẩu nhập cảnh
								Dim _isExistsCKNC As Boolean = (From q In data.EntryGates Where q.EntryGateCode = _entryGateCode.Trim).Count > 0
								If Not _isExistsCKNC Then
									_lstColIndexError &= "8,"
									_sbError.Append(",Không tồn tại mã cửa khẩu nhập cảnh [" & _entryGateCode & "]")
									'txtErrorLog.Text = txtErrorLog.Text & "- Dòng [" & index + 1 & "]: Không tồn tại mã cửa khẩu nhập cảnh [" & _entryGateCode & "]" & Environment.NewLine
									'Continue For
								End If

								' Check ngày nhập cảnh 
								If _entryDate > #1/1/1900# AndAlso _entryDate > Now.Date Then
									If Not _lstColIndexError.Contains("8,") Then
										_lstColIndexError &= "8,"
										_sbError.Append(",Ngày nhập cảnh lớn hơn ngày hiện tại")
									End If
									'txtErrorLog.Text = txtErrorLog.Text & "- Dòng [" & index + 1 & "]: " & Environment.NewLine
									'Continue For
								End If

								' Check DM nhập cảnh
								Dim _isExistsMucDichNhapCanh As Boolean = (From q In data.EntryPurposes Where q.EntryPurposeCode = _entryPurposeCode.Trim).Count > 0
								If Not _isExistsMucDichNhapCanh Then
									_lstColIndexError &= "9,"
									_sbError.Append(",Không tồn tại mã mục đích nhập cảnh [" & _entryPurposeCode & "]")
									'txtErrorLog.Text = txtErrorLog.Text & "- Dòng [" & index + 1 & "]:  Không tồn tại mã mục đích nhập cảnh [" & _entryPurposeCode & "]" & Environment.NewLine
									'Continue For
								End If

								' Check tạm trú từ ngày
								If Not _fromDate Is Nothing Then
									If _fromDate > Now.Date Then
										_lstColIndexError &= "10,"
										_sbError.Append(",Ngày bắt đầu tạm trú lớn hơn ngày hiện tại")
										'txtErrorLog.Text = txtErrorLog.Text & "- Dòng [" & index + 1 & "]: Ngày bắt đầu tạm trú lớn hơn ngày hiện tại " & Environment.NewLine
										'Continue For
									End If

									'If _entryDate > _fromDate Then
									'    txtErrorLog.Text = "- Dòng [" & index + 1 & "]: Ngày nhập cảnh lớn hơn ngày bắt đầu tạm trú" & txtErrorLog.Text & Environment.NewLine
									'    Continue For
									'End If

									If Not _toDate Is Nothing AndAlso _fromDate > _toDate Then
										If Not _lstColIndexError.Contains("4,") Then
											_lstColIndexError &= "4,"
											_sbError.Append(",Ngày bắt đầu tạm trú lớn hơn ngày dự kiến rời khởi khách sạn ")
										End If
										'txtErrorLog.Text = txtErrorLog.Text & "- Dòng [" & index + 1 & "]: Ngày bắt đầu tạm trú lớn hơn ngày dự kiến rời khởi khách sạn " & Environment.NewLine
										'Continue For
									End If

								End If
								Dim _hotelId As Integer = (From q In data.Hotels Where q.HotelCode = _hotelCode Select q.Id).FirstOrDefault()

								' Check tạm trú đến ngày 
								If Not _checkOutDate Is Nothing Then
									If _checkOutDate < Now.Date Then
										If Not _lstColIndexError.Contains("10,") Then
											_lstColIndexError &= "10,"
											_sbError.Append(",Ngày tạm trú đến ngày nhỏ hơn ngày hiện tại")
										End If
										'txtErrorLog.Text = txtErrorLog.Text & "- Dòng [" & index + 1 & "]: Ngày tạm trú đến ngày nhỏ hơn ngày hiện tại " & Environment.NewLine
										'Continue For
									End If
									If _checkOutDate < _fromDate Then
										If Not _lstColIndexError.Contains("10,") Then
											_lstColIndexError &= "10,"
											_sbError.Append(",Ngày tạm trú đến ngày nhỏ hơn ngày ngày bắt đầu tạm trú")
										End If
										'txtErrorLog.Text = txtErrorLog.Text & "- Dòng [" & index + 1 & "]: Ngày tạm trú đến ngày nhỏ hơn ngày ngày bắt đầu tạm trú " & Environment.NewLine
										'Continue For
									End If

									' Thuc hien check HoTen, QuocTich, SoHoChieu, fromDate, HotelCode
									_existCus = (From q In data.Customers _
									  Where q.FullName = _fullName And _
									  q.CountryCode = _countryCode And _
									   q.PasspostNumber = _passPostNumber And _
									   q.FromDate = _fromDate And _
									   q.HotelId = _hotelId).Count > 0
								End If
								If _hotelId = 0 Then
									_lstColIndexError &= "2,"
									txtErrorLog.Text = txtErrorLog.Text & "- Dòng [" & index + 1 & "]: Mã khách sạn [" & _hotelCode & "] không tồn tại trong hệ thống" & Environment.NewLine
									'Continue For
								End If

								If _lstColIndexError.Trim <> "" Then
									dt(index)("ErrorRow") = _lstColIndexError
									txtErrorLog.Text &= "- Dòng [" & index + 1 & "]: " & _sbError.ToString() & Environment.NewLine
									Continue For
								End If
								' nếu là lần đầu tiên thì thực hiện xóa dữ liệu của holtel đó
								If Not _isActionDelete Then
									hidhotelID.Value = _hotelId
									Dim sql As String = "Delete from CustomerTemp where hotelId= " & _hotelId
									data.ExecuteStoreCommand(sql)
									_isActionDelete = True
								End If
								'' Check xem số hộ chiếu này đã có chưa? ==> Nếu có rồi thì update. ko thì insert mới
								'_cus = (From q In data.Customers Where q.PasspostNumber = _passPostNumber.Trim Select q)
								'If IsNothing(_cus) Then
								'    _cus = New Customer
								'End If
								_cus = New CustomerTemp
								With _cus
									.FullName = _fullName
									.Sex = _sex
									.DateOfBirth = _dateBirth
									.DateOfBirthType = _dateBirthType
									.CountryCode = _countryCode
									.CountryName = _countryName
									.PasspostNumber = _passPostNumber
									.PasspostType = _passPostType
									.SoThiThuc = _visaNumber
									.LoaiThiThuc = _visaType
									.ThoiHanThiThuc = _visaDurationDate
									.NgayCapThiThuc = _visaIssueDate
									.CoQuanCapThiThuc = _visaAgency
									.EntryDate = _entryDate
									.GateCode = _entryGateCode
									.EntryPurposeCode = _entryPurposeCode
									.FromDate = _fromDate
									.ToDate = _toDate
									If _existCus Then
										.CheckOutDate = _checkOutDate
									End If
									.HotelId = _hotelId
									.OtherNote = _note
								End With
								data.CustomerTemps.AddObject(_cus)
								data.SaveChanges()
							Catch ex As Exception
								log4net.Config.XmlConfigurator.Configure()
								log.Error("Error error " & AddTabSpace(1) & Session("Username") & AddTabSpace(1) & "IP:" & GetIPAddress(), ex)
							End Try
						Next
						'' Show danh sách các item lên có thể add 
						'Dim _lst = (From q In data.CustomerTemps).ToList()

						'If _lst.Count > 0 Then
						'	btnSubmitChange.Enabled = True
						'	'With grvDanhSach
						'	'	.DataSource = _lst
						'	'	.DataBind()
						'	'End With

						'End If
						btnSubmitChange.Enabled = True
						With rptPrintedList
							.DataSource = dt
							.DataBind()
						End With
						GC.Collect()
					End If
					If txtErrorLog.Text.Trim <> "" Then
						divInformation.Attributes.Add("style", "display:blcok")
					End If
					'If _totalRow - _rowEffect = 0 Then
					'    Excute_Javascript(String.Format("AlertboxRedirect('cập nhật thành công {0}/{1} dược liệu.','../../Page/DuocLieu/List.aspx');", _rowEffect, _totalRow), Me.Page, True)
					'Else
					'    Excute_Javascript(String.Format("Alertbox('Cập nhật thành công {0}/{2}.Cập nhật thất bại{1}/{2}.');", _rowEffect, (_totalRow - _rowEffect), _totalRow), Me.Page, True)
					'End If
					Excute_Javascript("ajaxJquery();", Me.Page, True)
				Catch ex As Exception
					log4net.Config.XmlConfigurator.Configure()
					log.Error("Error error " & AddTabSpace(1) & Session("Username") & AddTabSpace(1) & "IP:" & GetIPAddress(), ex)
					txtErrorLog.Text = ex.StackTrace & Environment.NewLine & ex.StackTrace
					Excute_Javascript("ajaxJquery();Alertbox('error while processing data !');", Me.Page, True)
				Finally
					'' final-> Delete file upload
					If File.Exists(FilePath) Then
						File.Delete(FilePath)
					End If
				End Try
			End Using
		End If
	End Sub

	Protected Sub btnSubmitChange_Click(sender As Object, e As EventArgs) Handles btnSubmitChange.Click
		Using data As New VSEntities
			'' Call function thực hiện việc update or Insert vào Customers
			data.uspUpdateCustomer(hidhotelID.Value)
			Try
				Excute_Javascript("AlertboxRedirect('cập nhật thành công.','danh-sach-khach-tam-tru.html');", Me.Page, True)

			Catch ex As Exception
				Excute_Javascript("Alertbox('Cập nhật thất bại. " & ex.Message & "');", Me.Page, True)
			End Try
		End Using
	End Sub
	Protected Sub rptPrintedList_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles rptPrintedList.ItemDataBound
		'Dim row As VSModel.Customer = CType(e.Item.DataItem, Customer)
		Using data As New VSEntities
			Dim row As DataRowView = CType(e.Item.DataItem, DataRowView)
			Dim _error = row("ErrorRow")
			Dim lblStt As Label = CType(e.Item.FindControl("lblStt"), Label)
			lblStt.Text = e.Item.ItemIndex + 1
			Dim lblFullName As Label = CType(e.Item.FindControl("lblFullName"), Label)
			lblFullName.Text = row(0)
			Dim lblSex As Label = CType(e.Item.FindControl("lblSex"), Label)
			If Not row(1) Is Nothing AndAlso row(1).ToString.ToUpper = "M" Then
				lblSex.Text = "Nam"
			Else
				lblSex.Text = "Nữ"
			End If
			Dim lblDateOfBirth As Label = CType(e.Item.FindControl("lblDateOfBirth"), Label)
			Dim _dateBirth As Date?
			If row(3).ToString = "D" Then	   'Nếu _dateBirthType là 'D' 
				_dateBirth = Me.StringToDate(row(2))	' Format Date [YYYYMMDD]
			Else
				Try
					_dateBirth = New Date(row(2), 1, 1)	' Nếu là chỉ có năm sinh [_dateBirthType = 'Y'] thì ngày tháng mặc định là YYYY/01/01
				Catch ex As Exception
					_dateBirth = New Date?
				End Try
			End If
			lblDateOfBirth.Text = If(_dateBirth Is Nothing, "", _dateBirth.Value.ToString("dd/MM/yyyy"))

			Dim lblCountryName As Label = CType(e.Item.FindControl("lblCountryName"), Label)
			lblCountryName.Text = "[" & row(4) & "] - " & row("CountryName") ' day moi la ma quoc gia

			Dim lblSoLoaiHoChieu As Label = CType(e.Item.FindControl("lblSoLoaiHoChieu"), Label)
			Dim _loaiHC As String = row(6).ToString
			Dim _loaiHCName As String = (From q In data.LoaiHoChieux Where q.Code = _loaiHC Select q.Name).FirstOrDefault
			lblSoLoaiHoChieu.Text = row(5) & ", " & _loaiHCName '' so ho chieu, loai ho chieu

			'Loại, thời hạn, số, ngày cấp, cơ quan cấp thị thực
			Dim lblThiThuc As Label = CType(e.Item.FindControl("lblThiThuc"), Label)

			Dim _visaType As String = row(8).ToString
			Dim _loaiTT As String = (From q In data.LoaiThiThucs Where q.Code = _visaType Select q.Name).FirstOrDefault()
			lblThiThuc.Text = _loaiTT 'row(8) 'LoaiThiThuc
			Dim _thoiHanThiThuc As Date? = Me.StringToDate(row(9))
			If Not _thoiHanThiThuc Is Nothing Then	'*.ThoiHanThiThuc*'
				lblThiThuc.Text = lblThiThuc.Text & ", " & If(_thoiHanThiThuc Is Nothing, "", _thoiHanThiThuc.Value.ToString("dd/MM/yyyy"))
			End If
			'so thi thuc
			If row(7) <> "" Then 'SoThiThuc
				lblThiThuc.Text = lblThiThuc.Text & ", " & row(8)  '.SoThiThuc
			End If
			'ngay cap
			Dim _ngayCap As Date? = Me.StringToDate(row(10))
			If Not _ngayCap Is Nothing Then
				lblThiThuc.Text = lblThiThuc.Text & ", " & If(_ngayCap Is Nothing, "", _ngayCap.Value.ToString("dd/MM/yyyy"))
			End If
			' co quan cap
			If Not row(11) Is Nothing Then
				lblThiThuc.Text = lblThiThuc.Text & ", " & row(11) '.CoQuanCapThiThuc
			End If


			'ngay nhap canh
			Dim lblNgayNhapCanh As Label = CType(e.Item.FindControl("lblNgayNhapCanh"), Label)
			Dim _ngayNhapCanh As Date? = Me.StringToDate(row(12))
			If Not _ngayNhapCanh Is Nothing Then
				lblNgayNhapCanh.Text = If(_ngayNhapCanh Is Nothing, "", _ngayNhapCanh.Value.ToString("dd/MM/yyyy"))
			End If
			'cua khau nhap canh
			Dim lblCuaKhauNhapCanh As Label = CType(e.Item.FindControl("lblCuaKhauNhapCanh"), Label)
			Dim _entryCode As String = row(13).ToString
			Dim _entryGateName = (From q In data.EntryGates Where q.EntryGateCode = _entryCode Select q.EntryGateName).FirstOrDefault()
			lblCuaKhauNhapCanh.Text = _entryGateName 'row(13) '.GateName


			Dim lblMucDichNhapCanh As Label = CType(e.Item.FindControl("lblMucDichNhapCanh"), Label)
			Dim _entryPurposeCode = row(14).ToString
			Dim _entryPurposeName = (From q In data.EntryPurposes Where q.EntryPurposeCode = _entryPurposeCode Select q.EntryPurposeName).FirstOrDefault()

			lblMucDichNhapCanh.Text = _entryPurposeName	'row(14) '.EntryPurposeName


			Dim lblFromDate As Label = CType(e.Item.FindControl("lblFromDate"), Label)
			Dim _fromDate As Date? = Me.StringToDate(row(15))
			If Not _fromDate Is Nothing Then
				lblFromDate.Text = If(_fromDate Is Nothing, "", _fromDate.Value.ToString("dd/MM/yyyy"))
			End If

			Dim lblToDate As Label = CType(e.Item.FindControl("lblToDate"), Label)
			Dim _toDate As Date? = Me.StringToDate(row(15))

			If Not _toDate Is Nothing Then
				lblToDate.Text = If(_toDate Is Nothing, "", _toDate.Value.ToString("dd/MM/yyyy"))

			End If
		End Using


	End Sub

	''' <summary>
	''' Convert string to date by format yyyyMMdd
	''' </summary>
	''' <param name="_strDate"> string by format yyyyMMdd</param>
	''' <returns> Date</returns>
	''' <remarks> If string in not format [yyyyMMdd] ==> function return Date [1990/01/01]</remarks>
	Private Function StringToDate(ByVal _strDate As String) As Date?
		Try
			Dim _year As String = _strDate.Substring(0, 4)
			Dim _month As String = _strDate.Substring(4, 2)
			Dim _date As String = _strDate.Substring(6, 2)
			Return New Date(_year, _month, _date)
		Catch ex As Exception
			' Return New Date(1900, 1, 1)
			Return New Date?
		End Try
	End Function

	Public Function RowClassError(ByVal _flag As String) As String
		Try
			If _flag <> "" Then
				Return "RowError"
			Else
				Return ""
			End If
		Catch ex As Exception
			Return ""
		End Try

	End Function
	Public Function CellClassError(ByVal _flag As String, ByVal _lstStr As String) As String
		Try
			If _lstStr.Split(",").Contains(_flag) Then
				Return "CellsError"
			Else
				Return ""
			End If
		Catch ex As Exception
			Return ""
		End Try

    End Function

    Protected Sub btnThongBao_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnThongBao.Init
        btnThongBao.CssClass = "thickbox"
        btnThongBao.NavigateUrl = "~/Page/ThongBao.aspx?keepThis=true&TB_iframe=true&height=195&width=360&modal=true"
    End Sub

    Protected Sub hplTemplate_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles hplTemplate.Init
        hplTemplate.NavigateUrl = MainDomain & "Template/ImportCustomer.xlsx"
    End Sub
End Class
